package com.adams.sys.menu.dao;

import java.io.Serializable;
import java.util.List;

import com.adams.access.db.bean.Menu;
import com.adams.utils.Page;

/**
 * 
 * 
 * File Name : MenuDao.java
 * 
 * @Description : 菜单数据操作类,提供菜单的增、删、改和查功能
 * @author 902990封文进
 */
public interface MenuDao
{

	/**
	 * 
	 * Description : 添加菜单
	 * 
	 * @param menu
	 * 
	 */
	public void save(Menu menu);

	/**
	 * 
	 * Description : 更新菜单
	 * 
	 * @param menu
	 * 
	 */
	public void update(Menu menu);

	/**
	 * 
	 * Description : 删除菜单
	 * 
	 * @param menu
	 * 
	 */
	public void delete(Menu menu);

	/**
	 * 
	 * Description : 根据编号查询菜单
	 * 
	 * @param id
	 * @return Menu
	 * 
	 */
	public Menu get(Serializable id);

	/**
	 * 
	 * Description : 根据菜单码查询菜单
	 * 
	 * @param code
	 * @return Menu
	 * 
	 */
	public Menu queryByCode(String code);

	/**
	 * 
	 * Description : 根据分页查询所有菜单
	 * 
	 * @param page
	 * @return Page<Menu>
	 * 
	 */
	public Page<Menu> queryAllByPage(Page<Menu> page);

	/**
	 * Description : 查询所有的子菜单列表
	 * 
	 * @return
	 * 
	 */
	public List<Menu> queryAllSubMenus();

	/**
	 * 
	 * Description : 根据父菜单编号查询子菜单列表
	 * 
	 * @param parentId
	 * @return List<Menu>
	 * 
	 */
	public List<Menu> querySubMenus(Long parentId);

	/**
	 * 
	 * Description : 获取所有菜单
	 * 
	 * @return
	 * 
	 */
	public List<Menu> queryAll();
	
	/**
	 * Description:获取最大排序值
	 * @return
	 */
	public Integer queryMaxOrdinal();
}
